package pe.gob.mtpe.renoccsys.managedBeans;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletResponse;


import org.apache.commons.collections.map.HashedMap;

import net.sf.jasperreports.engine.JRException;

import pe.gob.mtpe.renoccsys.bean.ParamConsultaRetcc;
import pe.gob.mtpe.renoccsys.bean.TipoDocumentoIdentidad;
import pe.gob.mtpe.renoccsys.mybatis.despachadores.RetccDespatch;
import pe.gob.mtpe.renoccsys.mybatis.despachadores.TipoDocumendoIdeDespatch;
import pe.gob.mtpe.renoccsys.utils.FacesUtils;

@ManagedBean(name="retccBean")
@SessionScoped
public class RetccBean {
	
	
	
	private List<TipoDocumentoIdentidad> lstTipoDocumento;
	private List<Map>  lstResultadoConsultaRetcc;
	private ParamConsultaRetcc parametros;
	private FacesUtils utilitario= new FacesUtils();
	private TipoDocumendoIdeDespatch despachadorTipoDocumento= new TipoDocumendoIdeDespatch();
	private RetccDespatch despachadorRetcc= new RetccDespatch();
	
	
	public List<TipoDocumentoIdentidad> getLstTipoDocumento() {
		return lstTipoDocumento;
	}

	public void setLstTipoDocumento(List<TipoDocumentoIdentidad> lstTipoDocumento) {
		this.lstTipoDocumento = lstTipoDocumento;
	}
	
	
	public ParamConsultaRetcc getParametros() {
		return parametros;
	}

	public void setParametros(ParamConsultaRetcc parametros) {
		this.parametros = parametros;
	}
	
	

	public List<Map> getLstResultadoConsultaRetcc() {
		return lstResultadoConsultaRetcc;
	}

	public void setLstResultadoConsultaRetcc(List<Map> lstResultadoConsultaRetcc) {
		this.lstResultadoConsultaRetcc = lstResultadoConsultaRetcc;
	}

	public RetccBean(){
		 inicializar();
	}
	
	public void inicializar(){
		System.out.println("ENTRA A INICIALIZAR");
		parametros=new ParamConsultaRetcc();
		lstTipoDocumento= new ArrayList<TipoDocumentoIdentidad>();
		try {
			lstTipoDocumento=despachadorTipoDocumento.listaTipoDocumentos();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		lstResultadoConsultaRetcc=null;
	}	
	
	public String mensajesValidacion(ParamConsultaRetcc param){
		String mensajes=null;
		if(param.getTipoDocumento().equals("-1") && param.getNroDocumento().equals("") && param.getApePater().equals("") &&
				param.getApeMater().equals("") && 	param.getNombres().equals("") && param.getnCorrtc().equals(0)){
			mensajes="Debe ingresar por lo menos un criterio de búsqueda";
			
		}else if(!param.getNroDocumento().equals("") && param.getTipoDocumento().equals("-1")){
			mensajes="Debe seleccionar el tipo de documento";
		}else if(param.getNroDocumento().equals("") && !param.getTipoDocumento().equals("-1")){
			mensajes="Debe seleccionar el número de documento de identidad";
		}
		return mensajes;
	}
	
	public void realizarConsulta(){
		System.out.println("ENTRA A REALIZAR CONSULTA");
		System.out.println("parametros.getnCorrtc() "+ parametros.getnCorrtc());
		System.out.println(parametros.getTipoDocumento());
		System.out.println(parametros.getNroDocumento());
		System.out.println(parametros.getApePater());
		System.out.println(parametros.getApeMater());
		System.out.println(parametros.getNombres());
		
		try {
			
			
			
			String mensaje=null;
			mensaje=mensajesValidacion(parametros);
			if(mensaje==null){
				lstResultadoConsultaRetcc=despachadorRetcc.consultarRetcc(parametros);
			}else{
				
				FacesMessage msg = new FacesMessage(
						FacesMessage.SEVERITY_ERROR,
						mensaje,
						null);
				FacesContext.getCurrentInstance().addMessage(null, msg);
			}
			
			
			//System.out.println("Nro de registros= "+lstResultadoConsultaRetcc);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
	}
	
	public void mostrarReporte(){
		try {
			Map parameters = new HashedMap();
			
			utilitario.mostrarReporte(parameters, "rpt_retccInscritos.jrxml", lstResultadoConsultaRetcc,"reporte_trabajadores_retcc");
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/* MOSTRAR CARNe */
	
	

	public void mostrarCarnet(){
		Map<String,String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
		 
		String scorrRetccCarnet = params.get("corrRetccCarnet");
		Integer corrRetccCarnet=Integer.parseInt(scorrRetccCarnet);
		
		String rutaFoto = params.get("rutaFoto");
		
		
		System.out.println("CORR ENVIADO "+corrRetccCarnet);
		System.out.println("RUTA FOTO "+rutaFoto);
								
				try {
					Map parameters = new HashedMap();
					parameters.put("PV_FOTO", "D:/tmp/"+rutaFoto);
					
					parameters.put("PV_CABECERA", FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/images/logos/logo_mtpe.png"));
					parameters.put("PV_FIRMA",FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/images/logos/firma_gr.png"));
					List<Map>  lstCarnet=despachadorRetcc.emitirCarnet(corrRetccCarnet);
					FacesUtils.mostrarReporte(parameters, "rpt_carnet.jrxml", lstCarnet, "carnet");
				} catch (JRException e) {
					
					e.printStackTrace();
				} catch (IOException e) {
					
					e.printStackTrace();
				} catch (Exception e) {
					
					e.printStackTrace();
				}
				
		 	
			
		}

}
